#ifndef __LIST__H_
#define __LIST__H_


typedef char* ElemType;


typedef struct Node 
{   
    int num;
    ElemType name;
    ElemType writer;
    struct Node *prev;
    struct Node *next;
} Node;

typedef struct LinkedList
{
    Node *first;
    Node *last;
    int nodenum;
} LinkedList;
LinkedList *create_doublelist();
void insert_head_doublelist(LinkedList* l, int num,ElemType name,ElemType writer) ;
void printList(LinkedList* l);
Node* findElement(LinkedList* l, ElemType name) ;
Node* findElement1(LinkedList* l, ElemType writer);
void modifyElement1(LinkedList* l, ElemType oldData, ElemType newData);
void modifyElement2(LinkedList* l, ElemType oldData, ElemType newData,ElemType newData1);
void modifyElement3(LinkedList* l, ElemType oldData, ElemType newData);
void modifyElement4(LinkedList* l, ElemType oldData, ElemType newData);
void deleteElement(LinkedList* l, ElemType name);
void freeList(LinkedList* list);
void destroyList(LinkedList** listPtr);
#endif
